# 使用官方Python运行时作为父镜像
FROM python:3.9-slim

# 安装 tini
RUN apt-get update && apt-get install -y --no-install-recommends tini && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /app

# 更新软件源并安装系统依赖
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    pandoc \
    texlive-xetex \
    texlive-fonts-recommended \
    texlive-plain-generic \
    wget \
    xz-utils \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 复制项目文件到容器中
COPY . /app

# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt

# 安装pandoc-crossref
RUN wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 5 https://github.com/lierdakil/pandoc-crossref/releases/download/v0.3.13.0/pandoc-crossref-Linux.tar.xz \
    && tar -xJf pandoc-crossref-Linux.tar.xz \
    && mv pandoc-crossref /usr/local/bin/ \
    && rm pandoc-crossref-Linux.tar.xz

# 暴露端口
EXPOSE 8000

# 使用 tini 作为 entrypoint
ENTRYPOINT ["/usr/bin/tini", "--"]

# 运行应用
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
